/*
 * MenuEstandar.java
 *
 * Created on 5 de julio de 2005, 09:12 PM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package ig.formato.basic;
import ig.formato.util.CodigoBotones;
import javax.swing.JMenu;

//custom
//import com.ig.comunes.constantes.CodigoBotones;
/**
 *
 * @author Propietario
 */
public class MenuEstandar extends JMenu{
    
    /**
     * <p>Boton nuevo, el codigo de este boton debe ser el que
     * corresponda en com.ig.costantes.CodigoBotones.nuevo</p>
     *
     */
    private ItemMenu nuevo;
    
    /**
     * <p>Boton buscar, el codigo de este boton debe ser el que
     * corresponda en com.ig.costantes.CodigoBotones.buscar</p>
     *
     */
    private ItemMenu buscar;
    
    /**
     * <p>Boton modificar, el codigo de este boton debe ser  el que
     * corresponda en com.ig.costantes.CodigoBotones.modificar</p>
     *
     */
    private ItemMenu modificar;
    
    /**
     * <p>Boton guardar, el codigo de este boton debe ser  el que
     * corresponda en com.ig.costantes.CodigoBotones.guardar</p>
     *
     */
    private ItemMenu guardar;
    
    /**
     * <p>Boton eliminar, el codigo de este boton debe ser  el que
     * corresponda en com.ig.costantes.CodigoBotones.eliminar</p>
     *
     */
    private ItemMenu eliminar;
    
    /**
     * <p>Boton salir, el codigo de este boton debe ser  el que
     * corresponda en com.ig.costantes.CodigoBotones.salir</p>
     *
     */
    private ItemMenu salir;
    
    /**
     * <p>Boton nuevo, el codigo de este boton debe ser  el que
     * corresponda en com.ig.costantes.CodigoBotones.imprimir</p>
     *
     */
    private ItemMenu imprimir;
    
    /**
     * <p>Boton nuevo, el codigo de este boton debe ser  el que
     * corresponda en com.ig.costantes.CodigoBotones.cancelar</p>
     *
     */
    private ItemMenu cancelar;
    
    /**
     * <p>Numero que identifica inequivocamente cuales de los botones en la
     * barra estan activos, siempre es un multiplo de 2, o el 0</p>
     * <p>Ejemplo</p>
     * Si El codigo del boton nuevo fuera 2, el de buscar 4 tendriamos :<br/>
     * <table>
     *    <th colspan="0" rowspan="0" align="center" valign="middle" bgcolor="#C1B5B5">
     *       <td>Estado</td><td>Botones Activos</td>
     *    </th>
     *    <tr><td>2<td></td>boton nuevo</td></tr>
     *    <tr><td>4<td></td>boton buscar</td></tr>
     *    <tr><td>6<td></td>boton nuevo y boton buscar</td></tr>
     * </table>
     * <p>en general, los botones activos se ubican como suma de sus codigos,
     * existen sumas predefinidas en la clase CodigoBotones  del
     * paquete com.ig.comunes.constantes.CodigoBotones</p>
     * <p>Se debe tener en cuenta que solo los botones visibles
     * pueden estar activos</p>
     *
     *
     */
    private int estado;
    
    /**
     * <p>Numero que identifica inequivocamente cuales de los botones en la
     * barra estan activos, siempre es un multiplo de 2, o el 0</p>
     * <p>Ejemplo</p>
     * Si El codigo del boton nuevo fuera 2, el de buscar 4 tendriamos :<br/>
     * <table>
     *    <th colspan="0" rowspan="0" align="center" valign="middle" bgcolor="#C1B5B5">
     *       <td>visible</td><td>Botones visibles</td>
     *    </th>
     *    <tr><td>2<td></td>boton nuevo</td></tr>
     *    <tr><td>4<td></td>boton buscar</td></tr>
     *    <tr><td>6<td></td>boton nuevo y bot???n buscar</td></tr>
     * </table>
     * <p>en general, los botones visibles se ubican como suma de sus codigos,
     * existen sumas predefinidas en la clase CodigoBotones  del
     * paquete com.ig.comunes.constantes.CodigoBotones</p>
     *
     */
    private int visible;
    /*
     *  
     *
     */ 
    ItemMenu[] items={nuevo,buscar,modificar,guardar,eliminar,salir,imprimir,cancelar};
    /**
     * <p>Does ...</p>
     *
     */
    public  MenuEstandar(String text) {
        super(text);
        adicionarItems();
    }
    
    
    /**
     * <p>Does ...</p>
     *
     *
     * @param _estado
     */
    public  MenuEstandar(String text,int _estado) {
        super(text);
        setEstado(_estado);
        
    }
    
    /**
     * <p>Does ...</p>
     *
     *
     * @param _estado
     * @param _visible
     */
    public  MenuEstandar(String text,int _estado, int _visible) {
        super(text);
        setEstado(_estado);
        setVisible(_visible);        
    }    
    /**
     * <p>Numero que identifica inequivocamente cuales de los botones en la
     * barra est???n activos, siempre es un m???ltiplo de 2, o el 0</p>
     * <p>Ejemplo</p>
     * Si El c???digo del bot???n nuevo fuera 2, el de buscar 4 tendriamos :<br/>
     * <table>
     * <th colspan="0" rowspan="0" align="center" valign="middle" bgcolor="#C1B5B5">
     * <td>Estado</td><td>Botones Activos</td>
     * </th>
     * <tr><td>2<td></td>boton nuevo</td></tr>
     * <tr><td>4<td></td>boton buscar</td></tr>
     * <tr><td>6<td></td>boton nuevo y bot???n buscar</td></tr>
     * </table>
     * <p>en general, los botones activos se ubican como suma de sus c???digos,
     * existen sumas predefinidas en la clase CodigoBotones  del
     * paquete com.ig.comunes.constantes.CodigoBotones</p>
     * <p>Se debe tener en cuenta que solo los botones visibles
     * pueden estar activos</p>
     *
     *
     * @return
     */
    public int getEstado() {
        return estado;
    }
    /**
     * <p>Numero que identifica inequivocamente cuales de los botones en la
     * barra estan activos, siempre es un multiplo de 2, o el 0</p>
     * <p>Ejemplo</p>
     * Si El c???digo del boton nuevo fuera 2, el de buscar 4 tendriamos :<br/>
     * <table>
     * <th colspan="0" rowspan="0" align="center" valign="middle" bgcolor="#C1B5B5">
     * <td>Estado</td><td>Botones Activos</td>
     * </th>
     * <tr><td>2<td></td>boton nuevo</td></tr>
     * <tr><td>4<td></td>boton buscar</td></tr>
     * <tr><td>6<td></td>boton nuevo y bot???n buscar</td></tr>
     * </table>
     * <p>en general, los botones activos se ubican como suma de sus codigos,
     * existen sumas predefinidas en la clase CodigoBotones  del
     * paquete com.ig.comunes.constantes.CodigoBotones</p>
     * <p>Se debe tener en cuenta que solo los botones visibles
     * pueden estar activos</p>
     *
     *
     * @param _estado
     */
    public void setEstado(int _estado) {
        estado = _estado;
        for(int z=0;z<items.length;z++){
            items[z].setEnabled((items[z].getCodigo() & estado)!=0);            
        }
    }
    
    /**
     * <p>Numero que identifica inequivocamente cuales de los botones en la
     * barra estan activos, siempre es un multiplo de 2, o el 0</p>
     * <p>Ejemplo</p>
     * Si El codigo del boton nuevo fuera 2, el de buscar 4 tendriamos :<br/>
     * <table>
     * <th colspan="0" rowspan="0" align="center" valign="middle" bgcolor="#C1B5B5">
     * <td>visible</td><td>Botones visibles</td>
     * </th>
     * <tr><td>2<td></td>boton nuevo</td></tr>
     * <tr><td>4<td></td>boton buscar</td></tr>
     * <tr><td>6<td></td>boton nuevo y boton buscar</td></tr>
     * </table>
     * <p>en general, los botones visibles se ubican como suma de sus codigos,
     * existen sumas predefinidas en la clase CodigoBotones  del
     * paquete com.ig.comunes.constantes.CodigoBotones</p>
     *
     *
     * @return
     */
    public int getVisible() {
        return visible;
    }
    /**
     * <p>Numero que identifica inequivocamente cuales de los botones en la
     * barra estan activos, siempre es un multiplo de 2, o el 0</p>
     * <p>Ejemplo</p>
     * Si El c???digo del boton nuevo fuera 2, el de buscar 4 tendriamos :<br/>
     * <table>
     * <th colspan="0" rowspan="0" align="center" valign="middle" bgcolor="#C1B5B5">
     * <td>visible</td><td>Botones visibles</td>
     * </th>
     * <tr><td>2<td></td>boton nuevo</td></tr>
     * <tr><td>4<td></td>boton buscar</td></tr>
     * <tr><td>6<td></td>boton nuevo y boton buscar</td></tr>
     * </table>
     * <p>en general, los botones visibles se ubican como suma de sus codigos,
     * existen sumas predefinidas en la clase CodigoBotones  del
     * paquete com.ig.comunes.constantes.CodigoBotones</p>
     *
     *
     * @param _visible
     */
    public void setVisible(int _visible) {
        visible = _visible;
         for(int z=0;z<items.length;z++){
            items[z].setVisible((items[z].getCodigo() & visible)!=0);            
        }
    }
  /*
   *
   *
   *
   */
    public void adicionarItems(){
     String[] toolTips={"Nuevo","Buscar","Modificar","Guardar","Eliminar","Salir","Imprimir","Cancelar"};
     int[] codigoBotones={CodigoBotones.nuevo,CodigoBotones.buscar,CodigoBotones.modificar,CodigoBotones.guardar,CodigoBotones.eliminar,CodigoBotones.salir,CodigoBotones.imprimir,CodigoBotones.cancelar};
     
        for (int z=0;z<items.length;z++){
            items[z] = new ItemMenu(toolTips[z]);
            items[z].setCodigo(codigoBotones[z]);
            if(z!=5)
            add(items[z]);            
        }
        add(items[5]);//Adicionar Salir al final
    }
    /*
     *
     *
     *
     */
    public ItemMenu getItemMenu(String nombre){
        ItemMenu item=null;
        
        if(nombre.equals("nuevo")){
            item = items[0];
        }else if (nombre.equals("buscar")){
            item = items[1];
        }else if (nombre.equals("modificar")){
            item = items[2];
        }else if (nombre.equals("guardar")){
            item = items[3];
        }else if (nombre.equals("eliminar")){
            item = items[4];
        }else if (nombre.equals("salir")){
           item = items[5];
        }else if (nombre.equals("imprimir")){
            item = items[6];
        }else if (nombre.equals("cancelar")){
           item = items[7];
        }
        return item;        
    }
    
    
}